Systems and methods for discrete channel decoding of LDPC codes for flash memory

ABSTRACT

Embodiments include systems and methods for soft encoding and decoding of data for flash memories using Log-Likelihood Ratios (LLRs). The LLRs are computed from statistics determined by observation of flash memory over time. In some embodiments, the write, retention and read transition probabilities are computed based on the observed statistics. These probabilities are used to compute the LLRs. During a read operation, a device reads the voltage of a cell of the flash memory. The level of the output is determined from the voltage. The level determines which LLRs to compute and transmit to a soft decoder.

FIELD

This written description is in the field of multi-level cell (MLC) flashmemories. More particularly, the description is in the field of discretechannel decoding of flash memory contents.

BACKGROUND

Flash memory is non-volatile computer memory that can be electricallyerased and reprogrammed. It is a technology that is primarily used inmemory cards, and Universal Serial Bus (USB) flash drives (e.g., thumbdrive, handy drive, memory stick, flash stick, jump drive) for generalstorage and transfer of data between computers and other digitalproducts. It is a specific type of Electrically Erasable ProgrammableRead Only Memory (EEPROM) that is erased and programmed in large blocks.Flash memory costs far less than byte-programmable EEPROM and thereforehas become the dominant technology wherever a significant amount ofnon-volatile, solid-state storage is needed. Examples of applicationsinclude Personal Digital Assistants (PDAs) and laptop computers, digitalaudio players, digital cameras and mobile phones.

Flash memory is non-volatile, which means that it does not need power tomaintain the information stored in the chip. In addition, flash memoryoffers fast read access times (although not as fast as volatile directRandom Access Memory (DRAM) used for main memory in PCs) and betterkinetic shock resistance than hard disks. These characteristics explainthe popularity of flash memory for applications such as storage onbattery-powered devices. Another feature of flash memory is that whenpackaged in a “memory card”, it is enormously durable, being able towithstand intense pressure, extremes of temperature and immersion inwater.

Flash memory stores information in an array of floating-gatetransistors, called “cells”. In traditional single-level cell (SLC)devices, each cell stores only one bit of information. However, newerflash memory, known as multi-level cell (MLC) devices, can store morethan one bit per cell by choosing between multiple levels of electricalcharge to apply to the floating gates of its cells.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts an embodiment of a flash memory system with an LLRcalculator for computing Log Likelihood Rations.

FIG. 2 depicts a flow chart of an embodiment for calculating and usingLog Likelihood Ratios.

DETAILED DESCRIPTION OF EMBODIMENTS

The following is a detailed description of embodiments of the inventiondepicted in the accompanying drawings. The embodiments are in suchdetail as to clearly communicate the invention. However, the amount ofdetail offered is not intended to limit the anticipated variations ofembodiments; but, on the contrary, the intention is to cover allmodifications, equivalents, and alternatives falling within the spiritand scope of the present invention as defined by the appended claims.The detailed descriptions below are designed to make such embodimentsobvious to a person of ordinary skill in the art.

Embodiments include systems and methods for soft encoding and decodingof data for flash memories using Log-Likelihood Ratios (LLRs). The LLRsare computed from statistics determined by observation of flash memoryover time. In some embodiments, the write, retention and read transitionprobabilities are computed based on the observed statistics. Theseprobabilities are used to compute the LLRs. During a read operation, adevice reads the voltage of a cell of the flash memory. The level of theoutput is determined from the voltage. The level determines which LLRsto compute and transmit to a soft decoder.

It is known that flash memory exhibits errors. One therefore wishes toencode the data to be written to the memory in such a way as to maximizethe probability that after any amount of retention time, the data thatis read is the same as the data that was written. When the write data isencoded, the encoded data that is actually written must be decoded whenthe data is read. There are hard decoders and soft decoders. With harddecoding, the voltage level detected during a read operation determineswhether the data read is a (0,0), (0,1), (1,0), (1,1) (in a 4 flashmemory). These hard bits are fed to the hard decoder which determinesthe read data sent to the reading device. In soft decoding, the valuesdetermined from a read of memory are statistical in nature. Theperformance of hard decoding is not as good as the performance of softdecoding such as Low Density Parity Check (LDPC) decoding. One thereforedesires to use soft decoding such as LDPC. LDPC coding is relativelysimple, has minimal redundancy and minimal decoder complexity. However,to implement LDPC decoding, one needs soft values. Soft values arevalues corresponding to the level of the voltage read from the cell thatdepend upon the error statistics of the memory. Soft values depend upona priori knowledge of the statistics of the write, retention, and readoperations on the memory. Thus, embodiments described herein providesoft values based on observed statistics of the flash memory.

In multilevel cell (MLC) Flash memories, issues such as disturbancesduring write/read and retention become critical for memory reliability.In MLC single Flash memory, a floating gate transistor stores two bitsof information using four levels of threshold voltage. However usage ofhigher order modulation leads to more unpredictable programming, andless reliable retention and reading. Low Density Parity Check (LDPC)codes have good decoding performance using probabilistic decoders.Unfortunately in Flash memory devices it is impractical to get softchannel output for such decoders. Embodiments described herein provide amethod for setting up bit reliabilities that can be used for LDPCprobabilistic decoders using transition probabilities between thresholdvoltage levels.

Overall memory operation can be divided into three parts: write errors,retention errors and read errors. Write errors can be described usingthe following probability transition matrix:

${WR} = \begin{pmatrix}{\approx 1} & W_{wr} & {W_{wr}{\exp( \frac{\beta( {\delta_{0} + \delta_{1}} )}{2} )}} & {{W_{wr}{\exp( \frac{\beta( {\delta_{0} + {2\delta_{1}} + \delta_{2}} )}{2} )}} + Z_{wr}} \\{\approx 0} & {\approx 1} & X_{wr} & {{X_{wr}{\exp( \frac{\beta( {\delta_{0} + \delta_{1}} )}{2} )}} + Z_{wr}} \\{\approx 0} & {\approx 0} & {\approx 1} & {Y_{wr} + Z_{wr}} \\{\approx 0} & {\approx 0} & {\approx 0} & {\approx 1}\end{pmatrix}$where X_(wr), W_(wr), Y_(wr), Z_(wr)∝cycles, Z_(wr)=1−(1−p)^(s), andp∝cycles, and cycles is the number of program/erase cycles, S is memorystring size, β is a slope factor, and δ_(i) is the difference betweenmean threshold voltages of the levels. The terms in the matrix aredetermined from observing actual flash memory in operation anddetermining transition probabilities from these observations. Note thatit has been observed that the threshold voltages have Gaussian likedistributions with a tail. The transition probabilities therefore may beexpressed in terms of exponentials. The terms can be stored in memory.As will be shown, the terms of the matrix are used to compute LogLikelihood Ratios that are transmitted to a decoder, which in oneembodiment is an LDPC decoder.

Retention errors can be described using the following probabilitytransition matrix:

${R\; E\; T} = \begin{pmatrix}{\approx 1} & {\approx 0} & {\approx 0} & {\approx 0} \\{\approx {X_{ret}{\exp( \frac{\beta( {\delta_{0} + {2\delta_{1}} + \delta_{2}} )}{2} )}}} & {\approx 1} & {\approx 0} & {\approx 0} \\{\approx {X_{ret}{\exp( \frac{\beta( {\delta_{0} + {2\delta_{1}} + \delta_{2}} )}{2} )}}} & {\approx {X_{ret}{\exp( \frac{\beta( {\delta_{1} + \delta_{2}} )}{2} )}}} & {\approx 1} & {\approx 0} \\{\approx {X_{ret}{\exp( \frac{\beta( {\delta_{0} + {2\delta_{1}} + \delta_{2}} )}{2} )}}} & {\approx {X_{ret}{\exp( \frac{\beta( {\delta_{1} + \delta_{2}} )}{2} )}}} & {\approx X_{ret}} & {\approx 1}\end{pmatrix}$where X_(ret)∝ cycles×time^(α), cycles is the number of program/erasecycles, time—retention time in hours. α is an acceleration factor. Theterms of this matrix are determined from observing actual flash memoryin operation and determining transition probabilities from theseobservations.

Read errors can be described using the following probability transitionmatrix:

${RD} = \begin{pmatrix}{\approx 1} & X_{rd} & {X_{rd}{\exp( \frac{\beta( {\delta_{0} + \delta_{1}} )}{2} )}} & {X_{rd}{\exp( \frac{\beta( {\delta_{0} + {2\delta_{1}} + \delta_{2}} )}{2} )}} \\{\approx 0} & {\approx 1} & {X_{rd}{\exp( \frac{\beta( {\delta_{0} + \delta_{1}} )}{2} )}} & {X_{rd}{\exp( \frac{\beta( {\delta_{0} + {2\delta_{1}} + \delta_{2}} )}{2} )}} \\{\approx 0} & {\approx 0} & {\approx 1} & {X_{rd}{\exp( \frac{\beta( {\delta_{0} + {2\delta_{1}} + \delta_{2}} )}{2} )}} \\{\approx 0} & {\approx 0} & {\approx 0} & {\approx 1}\end{pmatrix}$where X_(rd)∝cycles×nreads^(γ), cycles is the number of program/erasecycles, nreads is the number of extensive reads, and γ is anacceleration factor. The terms of this matrix are determined fromobserving actual flash memory in operation and determining transitionprobabilities from these observations.

To derive memory cell bit log-likelihood ratios we need to obtain theprobability transition matrix between levels after a full memoryoperation cycle (write, retention and read). That matrix is the productof the matrices given above:P=WR*RET*RDThus, the write, retention, and read operations is analogous to datapassing through a channel that introduces errors. The channel hasstatistics associated therewith. One desires to learn from thesestatistics and use them to determine Log Likelihood Ratios for input toa soft decoder. So using the channel matrix P we compute log-likelihoodratios and simplify them by neglecting probability terms with orderlarger than one. To simplify the terms, we define three constants asfollows:

$K_{1} = {\exp( \frac{\beta( {\delta_{0} + {2\delta_{1}} + \delta_{2}} )}{2} )}$$K_{2} = {\exp( \frac{\beta( {\delta_{0} + \delta_{1}} )}{2} )}$$K_{3} = {\exp( \frac{\beta( {\delta_{1} + \delta_{2}} )}{2} )}$These constants are used to compute the Log Likelihood Ratios (LLRs):

${{L\; L\; R_{{msbL}\; 0}} = {\log( \frac{{K_{1}X_{ret}} + 1}{2K_{1}X_{ret}} )}};{{L\; L\; R_{{lsbL}\; 0}} = {\log( \frac{{K_{1}X_{ret}} + 1}{2K_{1}X_{ret}} )}};$${{L\; L\; R_{{msbL}\; 1}} = {\log( \frac{{K_{1}X_{ret}} + W_{wr} + X_{rd}}{{K_{3}X_{ret}} + 1} )}};{{L\; L\; R_{{lsbL}\; 1}} = {\log( \frac{W_{wr} + X_{rd} + 1}{2K_{3}X_{ret}} )}};$${{L\; L\; R_{{msbL}\; 2}} = {\log( \frac{{K_{2}X_{rd}} + X_{ret}}{{K_{2}X_{rd}} + W_{wr} + 1} )}};{{L\; L\; R_{{lsbL}\; 2}} = {\log( \frac{{K_{2}X_{rd}} + W_{wr} + X_{rd}}{X_{ret} + 1} )}};$${{L\; L\; R_{{msbL}\; 3}} = {\log( \frac{{K_{1}( {W_{wr} + X_{rd}} )} + Z_{wr} + 1}{{K_{3}X_{wr}} + {2K_{1}X_{rd}} + {2Z_{wr}} + Y_{wr}} )}};$${{L\; L\; R_{{lsbL}\; 3}} = {\log( \frac{{K_{1}( {W_{wr} + {2X_{rd}}} )} + {K_{3}X_{wr}} + {2Z_{wr}}}{{K_{1}X_{rd}} + Z_{wr} + Y_{wr} + 1} )}};$where LLR_(msbL) _(i) and LLR_(lsbL) _(i) are reliabilities of the levelL_(i) of most and least significant bits respectively. The use of theseLLRs to enable soft coding and decoding will be hereafter described.

FIG. 1 shows a block diagram of an embodiment for using calculated bitreliabilities to determine what has been stored in a cell of a flashmemory. The block diagram shows flash memory modeled as a channelphenomena. Hence, input data (that is, data to be stored in the memory)is first encoded using an LDPC Encoder 102. The purpose of the LDPCencoder is to encode the input data so that the probability of the databeing accurately recovered by a read operation is maximized. Thus, theLDPC code introduces redundancy in the data in such a way as to optimizethe probability of recovering the correct data during a read operation.The encoded data is written to the flash memory 104 where it is retainedfor some period of time. Flash memory may be used to retain data forlong periods of time. At some point in time after the data was stored,the data is read from the flash memory and is input to an LLR calculator108. Note that during writing and during retention and during reading,errors can occur which can be described by the above-given transitionprobability terms that are included in the Log Likelihood Ratios.

LLR calculator 108, calculates the reliabilities given above based onmemory parameters 106 which may include the number of program/erasecycles, the number of read operations, and retention time. LLRcalculator 108 receives the data read from flash memory 104 and at firstmakes a hard decision what level of voltage is received. For example, ifthe voltage read is at level 0, this corresponds to (1,1). If thevoltage read is at level 1, this corresponds to (0,1). If the voltageread is at level 2, this corresponds to (0,0). If the voltage read is atlevel 3, this corresponds to (1,0).

But rather than transmitting these hard bit values, the LLR calculator108 transmits, instead, the above-given bit reliabilities. Thus, for ahard decision that level 0 is read, LLR calculator 108 transmits(LLR_(msbL) ₀ , LLR_(lsb) ₀ ) to the LDPC decoder 110 instead of (1,1).For a hard decision that level 1 is read, LLR calculator 108 transmits(LLR_(msbL) ₁ , LLR_(lsbL) ₁ ) to LDPC decoder 110 instead of (0,1). Fora hard decision that level 2 is read, LLR calculator 108 transmits(LLR_(msbL) ₂ , LLR_(msbL) ₂ ) to LDPC decoder 110 instead of (0,0). Fora hard decision that level 3 is read, LLR calculator 108 transmits(LLR_(msbL) ₃ , LLR_(msbL) ₃ ) to LDPC decoder 110 instead of (1,0).This is shown in the following table.

Corresponding Log Likelihood Voltage Level Bit Values Ratios 0 1, 1(LLR_(msbL) ₀ , LLR_(lsbL) ₀ ) 1 0, 1 (LLR_(msbL) ₁ , LLR_(lsbL) ₁ ) 20, 0 (LLR_(msbL) ₂ , LLR_(lsbL) ₂ ) 3 1, 0 (LLR_(msbL) ₃ , LLR_(lsbL) ₃)where the LLRs are calculated or read from a memory.

The above-given bit reliabilities (LLRs) are herein called soft values.Outputting soft values that depend upon the statistics of the memoryprocess (i.e., number of program/erase cycles, number of reads,retention time) enables use of LDPC coding which provides very goodperformance with minimal redundancy and minimal decoder complexity.Other coding schemes that benefit from the use of soft values could beemployed in other embodiments. Thus, the LLRs output by the LLRcalculator, are used by the LDPC decoder to determine the read data. Theoutput of LDPC decoder 110 is the output data to be sent to the devicethat requested the read operation. Ideally, the output data (read data)is identical to the input data (write data).

Thus, one embodiment is a multi-level cell flash memory system forwriting, storing and reading data. The embodiment comprises an encoderto encode data received for writing to the memory. A flash memoryreceives data from the encoder and stores data and makes data availableto be read by an external device. A cell of the flash memory outputs avoltage level that is interpreted by an LLR calculator to be the closestone of four voltage levels of the cell. A Log-Likelihood Ratio (LLR)calculator outputs a calculated LLR value of each bit of the most andleast significant bits corresponding to the interpreted voltage level. Adecoder decodes the LLR values received from the calculator to determineread values of the memory system. In one embodiment, the encoder anddecoder implement Low Density Parity Check (LDPC) coding. In someembodiments, the LLR calculator outputs LLR values based on theinterpreted level, a number of program/erase cycles of the memory, anumber of read operations of the memory, and a retention time of thedata.

FIG. 2 shows a flow chart 200 of an embodiment for computing and usingLLRs based on a priori knowledge of the write, retention, and readstatistics of the memory. This a priori knowledge is obtained byobserving flash memory operation over many intervals of time (element202). Thus, for example, errors observed during may writes, retentions,and reads are used to obtain the terms that make up the LLR. The termsW,X,Y,Z,β, δ,α,γ, or the terms involving these terms, may thus becomputed in advance for each of a different set of the conditions (e.g.,cycles, nreads, retention time). Thus, terms that make up the LLRs, orthe LLRs themselves, can be computed in advanced and stored in memory tobe recalled as needed. This allows for use of soft coding such as LDPCcoding.

During memory operations, the system monitors the conditions ofoperation. Thus, the system will count program/erase cycles (element204), will count the number of reads (element 206), and monitor theretention time (element 208). This information may be used to look upthe correct LLR (or its terms) from memory. When the system must executea read operation, the LLR calculator received the read voltage anddetermines the level of the voltage received (element 210). Based on thedetermined level, the relevant LLRs are computed (or looked up inmemory). These LLRs are then transmitted to the decoder (element 212).

Thus, one embodiment comprises a method for determining data of amulti-level cell flash memory. The method comprises reading a cell ofthe memory to determine a voltage level of the cell. The method furthercomprises determining a soft value of each bit of a group of bitscorresponding to the level; wherein a soft value is determined from apriori information about the memory. The method also comprises decodingthe soft values to determine read values of the data.

In one embodiment, decoding the soft values is performed by a (LowDensity Parity Check) LDPC decoding algorithm. In some embodiments,determining a soft value of each bit of a group of bits corresponding tothe level comprises determining a soft value of a most significant bitin the group and determining a soft value of a least significant bit inthe group. In some embodiments, a flash memory cell is a four levelcell. In some embodiments, a soft value of a bit is a logarithmicfunction of transition probabilities. The transition probabilities maybe determined from observations of flash memory operations over time. Asoft value of a bit may depend upon a number of program/erase cycles ofthe memory, a number of read operations performed on the memory, andupon a memory retention time.

Thus, embodiments comprise a method for enabling the use of soft codingby determining LLRs that can be used by a soft decoder such as an LDPCdecoder. The LLRs that are output to the decoder depend upon the levelof the voltage of the cell, as well as the statistics of the memory.These statistics are based on observations of the behavior of a flashmemory over time. Embodiments therefore provide improved memoryperformance (i.e., less errors) because an optimal soft coding can beemployed.

The present invention and some of its advantages have been described indetail for some embodiments. It should be understood that variouschanges, substitutions and alterations can be made herein withoutdeparting from the spirit and scope of the invention as defined by theappended claims. An embodiment of the invention may achieve multipleobjectives, but not every embodiment falling within the scope of theattached claims will achieve every objective. Moreover, the scope of thepresent application is not intended to be limited to the particularembodiments of the process, machine, manufacture, composition of matter,means, methods and steps described in the specification. One of ordinaryskill in the art will readily appreciate from the disclosure of thepresent invention that processes, machines, manufacture, compositions ofmatter, means, methods, or steps, presently existing or later to bedeveloped are equivalent to, and fall within the scope of, what isclaimed. Accordingly, the appended claims are intended to include withintheir scope such processes, machines, manufacture, compositions ofmatter, means, methods, or steps.

1. A method for determining data of a multi-level cell flash memory,comprising: reading a cell of the memory to determine a voltage level ofthe cell; determining a soft value of each bit of a group of bitscorresponding to the level; wherein a soft value is determined from apriori information about the memory, wherein the soft value of each bitis calculated by a Log-Likelihood Ratio (LLR) calculator and is alogarithmic function of transition probabilities calculated fromobservations of flash memory operations over time, wherein theobservations comprise a number of program/erase cycles of the memory;and decoding the soft values to determine read values of the data. 2.The method of claim 1, wherein decoding the soft values is performed bya (Low Density Parity Check) LDPC decoding algorithm.
 3. The method ofclaim 1, wherein determining the soft value of each bit of the group ofbits corresponding to the level comprises determining a soft value of amost significant bit in the group and determining a soft value of aleast significant bit in the group.
 4. The method of claim 1, wherein aflash memory cell is a four level cell.
 5. The method of claim 1,wherein determining the soft value of each bit depends a number of readoperations performed on the memory.
 6. The method of claim 1, whereindetermining the soft value of each bit depends upon a memory retentiontime.
 7. A multi-level cell flash memory system for writing, storing andreading data, comprising: an encoder to encode data received for writingto a flash memory; the flash memory to receive data from the encoder andto store data and to make data available to be read by an externaldevice, wherein a cell of the flash memory outputs a voltage level thatis interpreted by a Log-Likelihood Ratio (LLR) calculator to be theclosest one of four voltage levels of the cell; the Log-Likelihood Ratio(LLR) calculator to output a calculated LLR value of each bit of themost and least significant bits corresponding to the interpreted voltagelevel, wherein the LLR value of each bit is a logarithmic function oftransition probabilities calculated from observations of flash memoryoperations over time, wherein the observations comprise a number ofprogram/erase cycles of the flash memory; and a decoder to decode theLLR values received from the calculator to determine read values of thememory system.
 8. The system of claim 7, wherein the encoder and decoderimplement Low Density Parity Check (LDPC) coding.
 9. The system of claim7, wherein the LLR calculator outputs LLR values based on theinterpreted level.
 10. The system of claim 7, wherein the LLR calculatoroutputs LLR values based on a number of read operations of the memory.11. The system of claim 7, wherein the LLR calculator outputs LLR valuesbased on a retention time of the data.